
            Common Controls Replacement Project FolderTreeview Control
                         Version 1.00.0006 Oct 30, 1999

                              Revision Information

The FolderTreeview control is an extremely complex control, requiring many months
of research, development and testing. Though I, and the rest of the CCRP team,
have painstakingly scoured the control's functionality and behavior, we freely
admit that the control may not yet be perfect (but it keeps getting better). We
openly invite and encourage those with the aptitude and wherewithal to put the
control through it's paces and try to break it.

If by chance you do encounter any problems or unexpected behavior from the control,
we ask that you please document in detail the events leading up to the problem, and
to post this information to the ccrp.foldertreeview newsgroup on the CCRP news
server at: news.mvps.org. Thank you, and we hope that the control serves you well.

Known bugs
==========

-  When the control is running on all versions of WinNT4 and WinNT5/Win2000, and
   a folder's share attribute is changed (via the folder's Properties window  in
   Explorer), the change is not reflected in the FolderTreeview, nor in subsequent
   instances of a currently running control. This bug is still unsolved.

-  When the control is used in an application (as opposed to a web page) and run in
   Windows with at least IE4 installed, Internet URLs do not appear in the treeview
   under the "Internet Explorer" shell folder. But when the control is run from a
   web page, or in an application with the WebBrowser control, the URLs do appear
   when the "Internet Explorer" shell folder is expanded. This is due to the
   FolderTreeview being able to communicate with the IWebBrowser interface, which
   the FolderTreeview does not itself implement.

-  When sited in a MDI child Form, the FolderTreeview  does not regain focus after
   losing focus to another window outside of the MDI parent Form. This is due to
   the FolderTreeview not handling client site interfaces correctly.

-  In designtime, and when sited in another UserControl, the FolderTreeview control
   begins to run, and is fully functional when activated. The FolderTreeview's
   Enabled property must be explicitly set to a value corresponding to its host
   UserControl's Ambient.UserMode property (disabled in designtime, enabled in
   runtime). This is a design limitation of the Visual Basic language, which the
   FolderTreeview control was written in.

-  Folders that contain only child folders with the hidden (FILE_ATTRIBUTE_HIDDEN)
   attribute, will have no button ("+", "-") and cannot be expanded. This is normal
   shell behavior.

-  When running on a Novell NetWare network service with long filename support
   enabled, the FolderTreeview control may incorrectly show share overlay icons,
   and be unable to correctly evaluate local file system paths when the RootFolder
   or SelectedFolder properties are being set. This may be specific to subfolders
   with long filenames residing under locally mapped drive folders.

These bugs are currently being addressed and it is hoped that they will all be
alleviated in the next control release. The author would appreciate information
and/or feedback from developers who have knowledge of, or have dealt with any
similar occurrences.


Revision history
================

-----------------------------------------------------------------------------------
Version 1.00.0006, Oct 30, 1999
-----------------------------------------------------------------------------------

New features:

-  Added hidden AttributesEx property to Folder class, allowing the retrieval of
   specified shell attributes.

New/altered behavior:

-  Environment variables are now automatically expanded when specified for the
   RootFolder and SelectedFolder's Name properties.

Improvements/fixes:

-  The RootFolder and SelectedFolder properties now become set correctly after
   being assigned through the Name property of the Folder class.

-  When the control's AutoUpdate property is set to True, the control now correctly
   refreshes its contents after the TweakUI applet adds or removes special shell
   folders on the Desktop folder. 

-  The KeyDown and KeyUp events now correctly occur for Alt+Key, F10 and Shift+F10
   (the events for these key combinations failed to occur on beta 3 builds only).

-  The control no longer beeps when a folder's checkbox state is toggled with the
   spacebar.

-  A fatal exception in Comctl32.dll no longer occurs when the FolderTreeview
   KeyPress event's KeyAscii parameter is set to 0 (canceling the keystroke).

-  A fatal exception no longer occurs when either a compiled application is closed,
   or in the VB IDE execution of code is stopped, during the execution of a
   FolderTreeview control event procedure, 

-  The control no longer references the non-existent ccrpftv.hlp file.

-  The Collapse, Expand and SelectionChange event descriptions have been changed
   to correctly read: "... the Cancel parameter can be set to *True* ..."
 
NT specific:

-  On WinNT4 only, when the RootFolder or SelectedFolder properties are set to a 
   network UNC path, the specified path no longer goes through the Entire Network
   subfolder, and now takes the path directly through the remote computer's
   subfolder residing directly under the Network Neighborhood folder.

-  The RootFolder and SelectedFolder properties can now be successfully set to a
   UNC network path on Windows NT which is running a network client other than the
   Microsoft Window Network.

-----------------------------------------------------------------------------------
Beta 3: build 0.03.1000, July 3, 1999, maintenance build
-----------------------------------------------------------------------------------

Fixes:

-  When the Expand event is cancelled for a folder that has not yet been expanded,
   and the folder is finally expanded, the FolderTreeview no longer displays
   duplicate subfolders under that folder. (see the CCRP site and newsgroups)

-  When the SelectionChange event is cancelled for a folder, this event is no 
   longer unexpectedly raised a second time for that folder.

-  When the control's AutoUpdate property is set to True, and a folder that the
   control is displaying is moved in Explorer to another folder that the control
   is also displaying, the control no longer shows an error message box. (this
   may have occurred in only rare instances)

-----------------------------------------------------------------------------------
Beta 3: build 0.03.023, June 23, 1999
-----------------------------------------------------------------------------------

New features:

-  Added SelectionDelay property, sets the time in milliseconds that the second
   SelctionChange event (PreChange = False) is delayed.

-  Added Shell32Ver property, returns the major and minor values of the currently
   installed version of Shell32.dll

-  Added VirtualFolders property. When set to False, only file system folders,
   and their ancestor folders (Desktop, My Computer, Network Neighborhood), appear
   in the FolderTreeview.

-  Added the ftvInternet value (&H1) to the GetSpecialFolderName method's 
   ftvSpecialFolderConstants enumeration, returns the displayname of the Internet
   Explorer virtual folder on >= IE4 installations.

-  Added ftvNoCheckboxesPreserveState value to the CheckBoxes property's
   tvCheckBoxesConstants enumeration, which like the ftvNoCheckBoxes value, removes
   the checkboxes from the control, but preserves the checked state of any Folder
   whose Checked property is set to True. When CheckBoxes is subsequently set to
   either ftvClickSelect or ftvClickNoSelect, the checkboxes of previously Checked
   Folders are restored.
   
New/altered behavior:

-  The RootFolder and SelectedFolder properties no longer change to desktop folder
   when assigned invalid values, invalid values are now ignored, and the FTV
   continues not to raise errors for these properties.

-  The URLs of recently visited web pages under the Internet Explorer folder are
   now available via the Folder object's FullPath property.

-  Checkboxes are now toggled when the mouse button is depressed, as opposed to
   being toggled when the mouse button is released.

-  Runtime errors are now generated when invalid values are assigned to the
   Appearance, BorderStyle and CheckBoxes properties.

-  When the AutoUpdate property is set to True, the entire contents of the control
   are no longer automatically refreshed. The Refresh method must now be explicitly
   called.

Improvements/fixes:

-  On multi-platform systems, when browsing namespace extension folders that are
   not registered in the current OS (Downloaded Program Files, Subscriptions, etc),
   these folders no longer expand as if they were the desktop folder.

-  When the HiddenFolders property is set to False, the RootFolder property can no
   longer be set to a hidden file system folder.

-  After the parent of the current SelectedFolder is collapsed, and the FTV
   refreshed, the SelectedFolder now sets correctly, and behaves as expected.
   The Selected property of Folders can now also be set during the SelectionChange
   event, without more than one folder remaining selected.

-  The RootFolder and SelectedFolder object properties now return the actual
   FolderTreeview internal Folder objects, rather than copies. This fixes the
   problem with the respective Folder object terminating before one of its
   properties is obtained (see the "Example, FolderTreeview: How to show a folder's
   shell properties dialog" in ccrp.binaries.examples).

-  The FolderTreeview no longer dies on stock Win95 when the b2 ExplorerMSLV demo 
   is navigated to certain virtual folders (Control Panel, Dial-Up Networking).

-  VScroll and HScroll events now occur for Ctrl+Arrow navigation keys.

-  The AboutBox graphic has been updated, it was not appearing on some systems.

-  An incremental treeview search now works (the W key should select the folder
   beginning a W).

-  The tooltip window no longer blinks when the control is sited in a modal window
   of a compiled application.

-  A My Computer folder rename is now detected as ftvFolderRenamed, instead of
   ftvFolderContentsUpdated.

-  Recently visited web pages (folders) are now correctly displayed under the
   Internet Explorer folder. (IE4 only)

-  Setting Folder.Selected to False, then back to True, now reselects the folder.

-  The Handle properties of the Picture objects returned by the Folder object's
   LargeIcon and SmallIcon properties can now be successfully used by APIs.

-  Overall performance control has been increased, and the control executes much
   more efficiently.

-  The Refresh method is now much more efficient and executes faster, though is
   less rigorous (only hits the disks when necessary).

-  The EnumFolderContents event no longer continues to be raised after its
   fContinue parameter has been set to False.

-  When the AutoUpdate property is set to True, changes in the system are now
   detected more accurately.
 
NT specific fixes:

-  All: The case of local and remote folder displaynames is now accurate.

-  All: The RootFolder and SelectedFolder properties can now successfully be set to
   a UNC path.

-  All: The treeview button ("+", "-") backcolor now changes when the system's
   window background color is changed from the default vbWindowBackground.

-  NT4 all SPs: The tooltips no longer appear after the Tooltips property has been
   set to False.

-  NT4 all SPs: The All Users profile Programs folder icons are now displayed
   correctly (looks like the Win95 Saved Search icon).

-  NT4 <= SP3: The check in the checkbox is now normal size (and not small).

-  NT4 SP4/5: Share overlays are now displayed for shared folders.

-  NT4 SP4/5: The Folder object's LargeIcon and SmallIcon properties no longer
   return Nothing for normal file system folder icons.

-  NT5/Win2K: The ComCtlVer property now returns the accurate Comctl32.dll version.

-  NT5/Win2K: Drive folder icons are now correctly displayed after the drive's
   displayname (volume label) is changed.

-----------------------------------------------------------------------------------
Beta 2: build 0.02.006, October 14, 1998
-----------------------------------------------------------------------------------

   ******************************************************************************
   * Users of the Beta 1 version of the FolderTreeview control please take note *
   *          *
   * In order to alleviate certain detrimental bugs that were discovered in *
   * the Beta 1 version of the FolderTreeview control, compatibility had to be *
   * broken when building the Beta 2 version. All development projects that *
   * currently reference the Beta 1 version of the control must be rereferenced.*
   * All compiled applications that reference the Beta 1 version of the control *
   * must be rebuilt. No beta version of the FolderTreeview control should be *
   * distributed with any compiled application that uses the control.  *
   ******************************************************************************

Beta 1 members that have been changed in Beta 2:

!  The default setting for the BorderStyle property has been changed from 
   ftvFixedSingle to ftvNone (the control is now created without the WS_BORDER
   window style bit set by default).

!  Fixed the problem of the PreSelectedFolder not becoming selected when the
   property is set, by removing the property altogether. The SelectedFolder
   property is now read-write, and assumes the functionality of the no longer
   existing PreSelectedFolder property.

   ******************************************************************************
   * All references to PreSelectedFolder must be changed to SelectedFolder      *
   ******************************************************************************

!  The FolderTreeview no longer depends on the IShellFolder typelib (ISHF_Ex.tlb);
   the return values of the Folder object's hidden isfMe and isfParent properties
   were changed from the IShellFolder interface data type, to the OLE Automation
   library (Stdole32.tlb) IUnknown interface data type.

   ******************************************************************************
   * Stdole32.tlb (included with all versions of Windows, and Visual Basic) *
   * must be present and registered on the user's system to allow the control *
   * to successfully load in the Visual Basic IDE.    *
   ******************************************************************************

   * All IShellFolder references obtained from the Folder object's isfMe and
     isfParent properties (now IUnknown interface data types) must now be obtained
     in code by casting to an IShellFolder interface object, either directly:

         Dim isf as IShellFolder
         Set isf = Folder.isfMe

     or indirectly:

         Call SomeProc(Folder.isfMe)
         Public Sub SomeProc(isf As IShellFolder)

   * The Stdole32.tlb type library does not need to be directly referenced by any
     project that uses the FolderTreeview control and references either of the
     Folder object's isfMe or isfParent properties.

New features:

-  Added the CheckBoxes property to the FolderTreeview control, and the Checked
   property to Folder objects.

-  Added the FolderClick event, that occur when the left or right mouse button is
   released over a folder. This event also occurs after any SelectionChange event.

-  Added the FolderUpdate event that occurs when the FolderTreeview's AutoUpdate
   property is set to True, and the contents of the FolderTreeview have changed.

-  Added the HitTest method returning the Folder object at the specified location,
   also optionally returns the portion of the Folder at the location (button icon,
   label, etc.)

-  Added an optional Style parameter to the Folder object's LargeIcon and SmallIcon
   properties, allowing the returned Picture object to contain any combination
   of the shell's normal and open icons, selection shading, and share and shortcut
   overlays.

-  Added the EnumContents property to the Folder object, which invokes the
   FolderTreeview's EnumContentsProc event, allowing the client to receive pointers
   to each item's absolute and relative item ID list (pidl) contained within the
   the specified Folder.

-  Added the AreSameFolders method, allowing two separate Folder object instances
   to be compared.

Improvements/fixes:

-  Network computer drive folder displaynames are now displayed as "share" 
   (drive letter) alone, without the "on computer" suffix.

-  Added accelerator key functionality when the control is sited in a  MDI child
   window. (Ctrl+Tab, Ctrl+F4, Ctrl+F6)

-  No more SelectionChange fired when setting the Folder's Selected property.
   Deselecting a folder now works (Folder.Selected = False)

-  Local drive folder displaynames (volume labels) are now correctly displayed when
   the control is run on NT4 and Win98.

-  No more Expand event is fired when a collapsed folder's button ("+") is removed
   by the FolderTreeview because the folder contained no subfolders.

-  The FolderTreeview's currently selected folder (SelectedFolder) is now made
   visible when the FolderTreeview refreshed it's contents as a result of an
   invalid folder selection (ValidateSelection = True).

-  The FolderTreeview now handles a MoveWindow API call issued on it's parent
   host control (a VB UserControl, accessed with GetParent(FTV.hWnd))

-  Fixed the mouse events, and the coordinates returned by them big time:

   * The behavior and order of events is now identical to the Comctl32.ocx TreeView

   * A folder now becomes selected when either mouse button is released over it, 
     invoking a FolderClick event (except when a Folder is being collapsed).

   * Click and MouseUp events are now raised for left button clicks on folders.

   * A Click event is now raised for the right button after mouse is dragged.

-  The FolderTreeview now refreshes it's contents on invalid folder and removable
   drive selections and expansions.

-  The second and redundant scroll event that occurred on each scroll no longer
   occurs

-  Grab handles now appear around the FolderTreeview control when it is part of a
   multiple control group selection in the VB IDE designtime environment.

-  Improved shell change detection when the AutoUpdate property is set to True:

    * A My Computer displayname change is now detected on Win95 with the IE4
      desktop update and in Win98.

    * A new folder created on desktop folder is now detected on Win95 IE4 desktop
      update and in Win98.

    * Changes made by 16 bit applications (MS DOS prompt, File Manager, etc.), and
      certain 32 bit applications are now detected.

-  The FolderTreeview still uses the pixel coordinate system exclusively in every
   one of it's methods that either accept or return internal FolderTreeview client
   coordinates (HitTest method, Indent property, all Mouse events).

-----------------------------------------------------------------------------------
Beta 1: build 0.01.061, May 10, 1998
-----------------------------------------------------------------------------------

-  First public release

Again, bugs or comments can be addressed to the newsgroup below. We hope that the
FolderTreeview control proves useful to you in your programming endeavors.

Brad Martinez

CCRP FolderTreeview Control
Copyright (C) 1997-99 Brad Martinez, CCRP
http://www.mvps.org/ccrp
news://news.mvps.org/ccrp.foldertreeview
